<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        // 深拷贝就是不管是基本数据类型还是引用数据类型都重新拷贝一份， 不存在共用数据的现象

        // 暴力版本 JSON.parse(JSON.stringify(object))
        let obj1 = {
            name: 'zhangfan',
            age: {
                value: 18
            }
        }
        let obj2 = JSON.parse(JSON.stringify(obj1))
        console.log(obj2) // {name:'zhangfan',age:{value:18}}
        console.log(obj1) // {name:'zhangfan',age:{value:18}}
        obj2.age.value = 28
        console.log(obj2) // {name:'zhangfan',age:{value:28}
        console.log(obj1) // {name:'zhangfan',age:{value:18}} // 不存在共用数据的现象


        // 看看它的缺陷
        var obj3 = {
            func: function () {
                console.log('this is function')
            },
            date: new Date(),
            symbol: Symbol(),
            a: null,
            b: undefined,
            c: {
                a: 1
            },
            e: new RegExp('regexp'),
            f: new Error('error')
        }
        let obj4 = JSON.parse(JSON.stringify(obj3))
        console.log(obj4) // {date: "2020-05-24T09:48:09.479Z", a: null, c: {a:1}, e: {}, f: {}}
        // 缺陷
        // 1.会忽略undefined
        // 2.会忽略symbol
        // 3.不能序列化函数
        // 4.不能解决循环引用的现象
        // 5.不能正确处理new Date()
        // 6.不能处理正则
        // 7.不能处理new Error 


    </script>a:1
</head>

<body>

</body>

</html>